/**
 * 里程碑管理器
 * 负责生成和管理游戏中的里程碑
 */
class MilestoneManager {
    constructor(game) {
        // 游戏实例引用
        this.game = game;
        
        // 里程碑容器
        this.streetLayer = document.getElementById('street-layer');
        
        // 里程碑列表
        this.milestones = [];
        
        // 里程碑间距（像素）
        this.milestoneDistance = 500;
        
        // 下一个里程碑位置
        this.nextMilestonePosition = this.milestoneDistance;
    }
    
    /**
     * 初始化里程碑管理器
     */
    init() {
        // 清空里程碑
        this.clearMilestones();
        
        // 重置位置
        this.nextMilestonePosition = this.milestoneDistance;
        
        // 生成初始里程碑
        this.generateMilestone();
    }
    
    /**
     * 更新里程碑
     */
    update() {
        // 获取小偷位置
        const thiefElement = document.getElementById('thief-character');
        if (!thiefElement) return;
        
        const thiefLeft = parseFloat(getComputedStyle(thiefElement).left) || 0;
        
        // 检查是否需要生成新里程碑
        if (thiefLeft > this.nextMilestonePosition - 100) {
            this.generateMilestone();
            this.nextMilestonePosition += this.milestoneDistance;
        }
        
        // 更新里程碑位置
        this.updateMilestonePositions();
        
        // 移除超出屏幕的里程碑
        this.removeOffscreenMilestones();
    }
    
    /**
     * 生成里程碑
     */
    generateMilestone() {
        // 创建里程碑元素
        const milestone = document.createElement('div');
        milestone.className = 'milestone';
        
        // 设置位置
        milestone.style.left = `${this.nextMilestonePosition}px`;
        
        // 添加到容器
        if (this.streetLayer) {
            this.streetLayer.appendChild(milestone);
            
            // 添加到里程碑列表
            this.milestones.push({
                element: milestone,
                position: this.nextMilestonePosition
            });
        }
    }
    
    /**
     * 更新里程碑位置
     */
    updateMilestonePositions() {
        // 根据打字速度计算移动速度
        const speed = 2 + (this.game.gameData.wpm / 20);
        
        // 更新每个里程碑的位置
        this.milestones.forEach(milestone => {
            const element = milestone.element;
            const currentLeft = parseFloat(element.style.left) || 0;
            element.style.left = `${currentLeft - speed}px`;
            milestone.position = currentLeft - speed;
        });
    }
    
    /**
     * 移除超出屏幕的里程碑
     */
    removeOffscreenMilestones() {
        this.milestones = this.milestones.filter(milestone => {
            const position = milestone.position;
            
            if (position < -50) {
                // 移除DOM元素
                if (milestone.element.parentNode) {
                    milestone.element.parentNode.removeChild(milestone.element);
                }
                return false;
            }
            
            return true;
        });
    }
    
    /**
     * 清空所有里程碑
     */
    clearMilestones() {
        this.milestones.forEach(milestone => {
            if (milestone.element.parentNode) {
                milestone.element.parentNode.removeChild(milestone.element);
            }
        });
        
        this.milestones = [];
    }
} 